|
Book details / order |
HEAD FIRST OBJECT-ORIENTED ANALYSIS & DESIGN |
Tired of reading object-oriented analysis and design books that only make sense after you're an expert? try our head first book. this witty and entertaining tutorial shows you how to analyze, design, and write great software that makes your boss happy, and your customers satisfied. you'll learn to solve real problems, regardless of their size and complexity, by applying good design principles and practices.
"head first object oriented analysis and design is a refreshing look at subject of ooad. what sets this book apart is its focus on learning. the authors have made the content of ooad accessible, usable for the practitioner."
ivar jacobson, ivar jacobson consulting
"i just finished reading hf ooa&d;and i loved it! the thing i liked most about this book was its focus on why we do ooa&d;-to write great software!"
kyle brown, distinguished engineer, ibm
"hidden behind the funny pictures and crazy fonts is a serious, intelligent, extremely well-crafted presentation of oo analysis and design. as i read the book, i felt like i was looking over the shoulder of an expert designer who was explaining to me what issues were important at each step, and why."
edward sciore, associate professor, computer science department, boston college
tired of reading object oriented analysis and design books that only makes sense after you're an expert? you've heard ooa&d;can help you write great software every time-software that makes your boss happy, your customers satisfied and gives you more time to do what makes you happy.
but how? head first object-oriented analysis & design shows you how to analyze, design, and write serious object-oriented software: software that's easy to reuse, maintain, and extend; software that doesn't hurt your head; software that lets you add new features without breaking the old ones.
inside you will learn how to:
use oo principles like encapsulation and delegation to build applications that are flexible
apply the open-closed principle (ocp) and the single responsibility principle (srp) to promote reuse of your code
leverage the power of design patterns to solve your problems more efficiently
use uml, use cases, and diagrams to ensure that all stakeholders are communicating clearly to help you deliver the right software that meets everyone's needs.
by exploiting how your brain works, head first ooa&d;compresses the time it takes to learn and retain complex information. expect to have fun, expect to learn, expect to be writing great software consistently by the time you're finished reading this!
about the authors
brett mclaughlin is a guitar player who is still struggling with the realization that you can't pay the bills if you're into acoustic fingerstyle blues and jazz. he's just recently discovered, to his delight, that writing books that help people become better programmers does pay the bills. he's very happy about this, as are his wife leigh, and his kids, dean and robbie.
gary pollice is a self-labeled curmudgeon (that's a crusty, ill- tempered, usually old man) who spent over 35 years in industry trying to figure out what he wanted to be when he grew up. even though he hasn't grown up yet, he did make the move in 2003 to the hallowed halls of academia where he has been corrupting the minds of the next generation of software developers with radical ideas like, "develop software for your customer, learn how to work as part of a team, design and code quality and elegance and correctness counts, and it's okay to be a nerd as long as you are a great one."
dave west would like to describe himself as sheik geek. unfortunately no one else would describe him in that way. they would say he is a professional englishman who likes to talk about software development best practices with the passion and energy of an evangelical preacher. recently dave has moved to ivar jacobson consulting, where he runs the americas and can combine his desire to talk about software development and spread the word on rugby and football, and argue that cricket is more exciting that baseball. before running the americas for ivar jacobson consulting, dave worked for a number of years at rational software (now a part of ibm). dave held many positions at rational and then ibm, including product manager for rup where he introduced the idea of process plug-ins and agility to rup. dave still laments the days when he use to sit in a cube and write software in the city of london. this is where he believes he cut his teeth writing big insurance systems with nothing but a green screen and a process flow chart.
chapter 1 well-designed apps rock: great software begins here
rock and roll is forever!
rick’s shiny new application...
here what the code for guitar.java looks like
and inventory.java...
but then rick started losing customers...
what’s the first thing you’d change?
great software is... more than just one thing
great software in 3 easy steps
remember rick? remember his lost customers?
so let’s apply our 3 steps
ditching string comparisons
rick’s customers want choices!
test drive
back to our steps
looking for problems
analyze the search() method
now update your own code
update the inventory class
getting ready for another test drive
getting back to rick’s app...
design once, design twice
let’s make sure inventory.java is (really) well-designed
one last test drive (and an app ready for reuse)
what we did
remember this poor guy?
ooa&d;is about writing great software, not doing a bunch of paperwork!
chapter 2 gathering requirements: give them what they want
you’ve got a new programming gig
todd and gina: your first customer
let’s start with the dog door
test drive
but when gina tried it...
listen to the customer
creating a requirements list
what does the dog door really need to do?
plan for things going wrong
alternate paths handle system problems
(re) introducing use cases
one use case, three parts
checking your requirements against your use cases
is anything missing?
so now can we write some code?
automatically closing the door
we need a new simulator!
test drive, version 2.0
it works! let’s go show todd and gina...
reviewing the alternate path
test drive, version 2.1
delivering the new dog door
working app, happy customers
chapter 3 requirements change: i love you, you’re perfect... now change
you’re a hero!
but then came a phone call...
back to the drawing board
the one constant in software analysis and designif you’ve read head first design patterns, this page might look a bit familiar. they did such a good job describing change that we decided to just rip off their ideas, and just change a few things here and there. thanks, beth and eric!
optional path? alternate path? who can tell?
use cases have to make sense to you
start to finish: a single scenario
let’s get ready to code...
finishing up the requirements list
now we can start coding the dog door again
was that a “woof” i heard?
power up the new dog door
updating the dog door
simplifying the remote control
a final test drive
more tools for your ooa&d;toolbox
chapter 4 analysis: taking your software into the real world
one dog, two dog, three dog, four...
your software has a context
identify the problem
plan a solution
update your use case
a tale of two coders
comparing barks
delegation in sam’s dog door: an in-depth look
the power of loosely coupled applications
back to sam, randy, and the contest...
maria won the macbook pro!
so what did maria do differently?
pay attention to the nouns in your use case
it’s all about the use case
there is no bark class here!
one of these things is not like the other...
remember: pay attention to those nouns!
from good analysis to good classes...
class diagrams dissected
class diagrams aren’t everything
so how does recognize() work now?
chapter 5 (part 1) good design = flexible software: nothing ever stays the same
rick’s guitars stringed instruments is expanding
let’s put our design to the test
did you notice that abstract base class?
we’ll need a mandolinspec class, too
behold: rick’s new application
class diagrams dissected (again)
let’s code rick’s new search tool
create an abstract class for instrument specifications
let’s code guitarspec...
... and mandolinspec, too
finishing up rick’s search tool
uh oh... adding new instruments is not easy!
so what are we supposed to do now?
oo catastrophe: objectville’s favorite quiz show
“what is an interface?”
“what is encapsulation?”
“what is change?”
(part 2) good design = flexible software: give your software a 30-minute workout
back to rick’s search tool
a closer look at the search() method
the benefits of our analysis
a closer look at the instrument classes
but classes are really about behavior!
death of a design (decision)
let’s turn some bad design decisions into good ones
one more cubicle conversation (and some help from jill)
“double encapsulation” in rick’s software
getting dynamic with instrument properties
what we did: a closer look
using the new instrument and instrumentspec classes
finishing up rick’s app: the instrumenttype enum
let’s update inventory, too
behold: rick’s flexible application
but does the application actually work?
test driving rick’s well-designed software
rick’s got working software, his client has three choices
sweet! our software is easy to change... but what about that “cohesive” thing?
cohesion, and one reason for a class to change
rick’s software, in review
knowing when to say “it’s good enough!”
chapter 6 solving really big problems: “my name is art vandelay... i am an architect”
it’s all in how you look at the big problem
the things you already know...
so let’s solve a big problem!
we need a lot more information
what is the system like?
what is the system not like?
customer conversation
figure out the features
but what is a feature, anyway?
use case diagrams
the little actor
actors are people, too (well, not always)
use case diagram... check! features covered... check!
so what exactly have we done?
cubicle conversation
let’s do a little domain analysis!
what most people give the customer...
what we’re giving the customer...
now divide and conquer
don’t forget who your customer really is
what’s a design pattern? and how do i use one?
feeling a little bit lost?
the power of ooa&d;(and a little common sense)
chapter 7 architecture: bringing order to chaos
feeling a little overwhelmed?
we need an architecture
architecture takes a big chaotic mess...
... and helps us turn it into a well-ordered application
let’s start with functionality
but which of these are the most important?
the three qs of architecture
1. is it part of the essence of the system?
2. what the fuck does it mean?
3. how the “heck” do i do it?
we’ve got a lot less chaos now...
... but there’s still plenty left to do
cubicle argument conversation
the tile and unit classes
more order, less chaos
which feature should we work on next?
game-specific units... what does that mean?
commonality revisited
solution #1: it’s all different!
solution #2: it’s all the same!
commonality analysis: the path to flexible software
and still more order...
what does it mean? ask the customer
do you know what “coordinating movement” means?
now do some commonality analysis
so now what would you do?
is there anything common here?
it’s “different for every game”
reducing risk helps you write great software
chapter 8 design principles: originality is overrated
design principle roundup
principle #1: the open-closed principle (ocp)
remember working on rick’s stringed instruments?
the ocp, step-by-step
principle #2: the don’t repeat yourself principle (dry)
dry is really about one requirement in one place
principle #3: the single responsibility principle (srp)
spotting multiple responsibilities
going from multiple responsibilities to a single responsibility
contestant #4: the liskov substitution principle (lsp)
misusing subclassing: a case study in misusing inheritance
lsp reveals hidden problems with your inheritance structure
“subtypes must be substitutable for their base types”
violating the lsp makes for confusing code
solving the 3dboard problem without using inheritance
delegate functionality to another class
when to use delegation
use composition to assemble behaviors from other classes
when to use composition
when the pizza is gone, so are the ingredients...
aggregation: composition, without the abrupt ending
aggregation versus composition
inheritance is just one option
chapter 9 iterating and testing: the software is still for the customer
your toolbox is filling up
but you’re still writing your software for the customer!
iterating deeper: two basic choices
feature driven development
use case driven development
two approaches to development
let’s use feature driven development
analysis of a feature
fleshing out the unit class
showing off the unit class
writing test scenarios
solution #1: emphasizing commonality
solution #2: emphasizing encapsulation
let’s go with the commonality-focused solution
match your tests to your design
let’s write the unit class
test cases dissected...
prove yourself to the customer
we’ve been programming by contract so far
programming by contract is really all about trust
and we can always change the contract if we need to...
but if you don’t trust your users...
-or if they don’t trust you...
moving units
break your apps up into smaller chunks of functionality
chapter 10 the ooa&d;lifecycle: putting it all together
developing software, ooa&d;style
the problem
now you should really know what you’re supposed to do
use cases reflect usage, features reflect functionality
now start to iterate
a closer look at representing a subway
let’s take a look at that subway file
let’s see if our use case works
to use a line class or not to use a line class... that is the question
code the station class
code the subway class
points of interest on the objectville subway (class)
protecting your classes (and your client’s classes, too)
the subwayloader class
it’s time to iterate again
but before we start iteration 2...
what’s left to do?
back to the requirements phase...
focus on code, then focus on customers. then focus on code, then focus on customers...
iteration makes problems easier
implementation: subway.java
what does a route look like?
one last test class...
check out objectville for yourself!
iteration #3, anyone?
the journey’s not over...
now take ooa&d;for a spin on your own projects!
appendix leftovers: the top ten topics (we didn’t cover)
#1. is-a and has-a
the problem with is-a and has-a
#2. use case formats
focusing on interaction
a more formal use case
#3. anti patterns
#4. crc cards
crc cards help implement the srp
#5. metrics
#6. sequence diagrams
#7. state diagrams
#8. unit testing
what a test case looks like
#9. coding standards and readable code
great software is more than just working code
#10. refactoring
appendix welcome to objectville: speaking the language of oo
welcome to objectville
uml and class diagrams
next up: inheritance
and polymorphism, too...
last but not least: encapsulation
now anyone can set the speed directly
so what’s the big deal?
Author : Gary pollice, david west, brett d. mclaughlin
Publication : Oreilly
Isbn : 9788184042214
Store book number : 105
NRS 1080.00
|
|
|
|
|
|
|
|
|
|